#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

void mode_to_str(mode_t mode, char *str)
{
    strcpy(str, "----------");
    if (S_ISDIR(mode))
        str[0] = 'd';
    if (S_ISCHR(mode))
        str[0] = 'c';
    if (mode & S_IRUSR)
        str[1] = 'r';
    if (mode & S_IWUSR)
        str[2] = 'w';
    // 其他权限位类似实现...
}

int main(int argc, char **argv)
{
    if (argc < 2)
    {
        printf("Usage: %s filename\n", argv[0]);
        return 1;
    }

    // 自动创建文件
    int fd = open(argv[1], O_RDWR | O_CREAT, 0644);
    close(fd);

    struct stat st;
    stat(argv[1], &st);
    char mode_str[11];
    mode_to_str(st.st_mode, mode_str);
    printf("Mode: %s\n", mode_str);
    return 0;
}